package VideoJuego;

import java.io.IOException;
import java.util.Random;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

/**
 * Crea la basura que aparece en el escenario a partir de Sprites
 * Desarrolladores:
 * Equipo: The Dream Team
 * @author José Francisco Ruiz Martínez 		A01166298
 * @authorJosé Héctor Bermúdez Robles                   A01161142
 * @authorArturo Ramírez Morales			A01165819
 * @version 1.0  Septiembre 2010
 */
public class Basura {

    private Random random;
    private Sprite basura;
    private int tipoDeBasura=0;
    private int contador=0, posicionY=0, posicionX = 185;
    private int valor=0;

    /**
     * Se crea aleatoriamente el tipo de basura
     * @param y posicion con respecto al fondo donde tiene que dibujarse la basura
     * @throws IOException Lanza una exepción si no puede encontrar alguna imagen
     */
    public Basura(int y) throws IOException {
        this.contador = 0;
        this.posicionY = y;
        random = new Random();
        tipoDeBasura = random.nextInt(5);
        switch (tipoDeBasura) {
            case 1:
                basura = new Sprite(Image.createImage("/ImagenesJuego/toxico.png"), 50, 40);
                basura.setPosition(posicionX, posicionY);
                valor = 50;
                
            case 2:
                basura = new Sprite(Image.createImage("/ImagenesJuego/spritePlastico.png"), 50, 23);
                basura.setPosition(posicionX, posicionY);
                valor = 40;
                break;

            case 3:
                basura = new Sprite(Image.createImage("/ImagenesJuego/spriteLata.png"), 60, 40);
                basura.setPosition(posicionX, posicionY);
                valor = 20;
                break;

            case 4:
                basura = new Sprite(Image.createImage("/ImagenesJuego/spriteBola.png"), 50, 40);
                basura.setPosition(posicionX, posicionY);
                valor = 10;
                break;

            case 5:
                basura = new Sprite(Image.createImage("/ImagenesJuego/spritePlatano.png"), 60, 58);
                basura.setPosition(posicionX, posicionY);
                valor = 5;
                break;

           default:
               basura = new Sprite(Image.createImage("/ImagenesJuego/toxico.png"), 50, 40);
               basura.setPosition(posicionX, posicionY);
               valor = 50;
               break;
        }
    }

    /**
     * Regresa la basura que se creó
     * @return Regresa la imagen de tipo sprite
     */
    public Sprite getBasura() {
        return basura;
    }

    /**
     * Actualiza la posición en la que se dibuja la basura en la pantalla de acuerdo a la 
     * posición en la que se encuentra el fondo
     * @param moverObjetos indica hacia qué dirección se tiene que mover la basura
     */
    public void actualizar(int moverObjetos) {

        mover();
        //Se mueve hacia la derecha o izq la basura
        if (moverObjetos == 1) {
            basura.move(0, -2);
        } else if (moverObjetos == 2) {
            basura.move(0, 2);
        }
    }

    /**
     * Mueve el sprite y cambia de frame dependiendo en que cordenada se encuentre la basura.
     * Esto con el objetvo de crear un efecto de que el personaje se acerca a la basura
     */
    public void mover() {
        this.basura.move(-3, 0);
        contador += 1;
        if (contador == 10 && basura.getRefPixelX() > 90) {
            this.basura.nextFrame();
            contador = 0;
        }
    }

    /**
     * Destruye la basura
     */
    public void destruir() {
    random=null;
    basura=null;
    tipoDeBasura=0;
    contador=0;
    posicionY=0;
    posicionX = 180;
    valor=0;
    }

    /**
     * Dibuja la basura en la pantalla la basura
     * @param g indica en donde se dibujara la basura
     */
    public void dibujar(Graphics g) {
        this.basura.paint(g);
    }

    /**
     *
     * @return Regresa el valor de la basura que se ha creado
     */
    public int getValorBasura() {
        return valor;
    }
}
